package com.xh.easyretry.strategy.retry;


import com.xh.easyretry.common.XHRetryContext;

public interface BaseRetryStrategy {

    /**
     * 获取策略名称
     */
    String getStrategy();

    /**
     * 是否可以执行重试
     */
    boolean canExecRetry(XHRetryContext retryContext);

    /**
     * 执行重试
     */
    Object execRetry(XHRetryContext retryContext);

    /**
     * 重试失败执行逻辑
     */
    void retryFailed(XHRetryContext retryContext, Object result);

    /**
     * 构建返回值
     */
    Object buildResult(XHRetryContext retryContext);
}
